/********************************************************************************
 *      Copyright:  (C) 2025 YANG Studio
 *                  All rights reserved.
 *
 *       Filename:  bee.h
 *    Description:  This file 
 *
 *        Version:  1.0.0(27/05/25)
 *         Author:  YANG JIAYU <yangjiayu@gmail.com>
 *      ChangeLog:  1, Release initial version on "27/05/25 19:18:20"
 *                 
 ********************************************************************************/
#ifndef __BEEP_H            // 预编译保护宏，防止头文件重复包含
#define __BEEP_H

#include "./SYSTEM/sys/sys.h"  // 包含系统基础头文件（提供时钟使能等底层功能）


/******************************************************************************************/
/* 蜂鸣器控制引脚定义（根据硬件设计修改） */

#define BEEP_GPIO_PORT                  GPIOB              // 蜂鸣器控制引脚所在GPIO端口（GPIOB）
#define BEEP_GPIO_PIN                   GPIO_PIN_8         // 蜂鸣器控制具体引脚（PB8）
#define BEEP_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)   /* 使能GPIOB时钟（do-while结构确保宏可在语句中使用） */

/******************************************************************************************/

/* 蜂鸣器控制操作宏定义（封装底层GPIO操作） */
#define BEEP(x)         do{ x ? \
                            HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_SET) : \
                            HAL_GPIO_WritePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN, GPIO_PIN_RESET); \
                        }while(0)                /* 蜂鸣器开关控制（x=1时输出高电平开启，x=0时输出低电平关闭） */

/* 蜂鸣器状态翻转宏 */
#define BEEP_TOGGLE()   do{ HAL_GPIO_TogglePin(BEEP_GPIO_PORT, BEEP_GPIO_PIN); }while(0)     /* 翻转蜂鸣器电平状态（等效于BEEP = !BEEP） */

void beep_init(void);   /* 初始化蜂鸣器（配置IO口并设置初始状态） */

#endif  /* __BEEP_H */  // 预编译保护宏结束

